"""
    @Author  ：思念 
    @File    ：11.线程池.py
    @Date    ：2025/3/4 10:04 
"""

import time
from concurrent.futures import ThreadPoolExecutor,as_completed


def get_movie_info(url):
    print("URL:", url)
    time.sleep(3)
    return "返回值URL:"+ url


url_1 = 'https://movie.douban.com/top250?start=0&filter='
url_2 = 'https://movie.douban.com/top250?start=25&filter='

pool = ThreadPoolExecutor()
future_1 = pool.submit(get_movie_info, url_1)
future_2 = pool.submit(get_movie_info, url_2)
# 任务是否完成 done()
print(future_1.done(), future_1.done())
# 任务取消 cancel() -- 任务未进入线程池时可取消，否则不可取消
print("任务2取消状态:",future_2.cancel())

# 返回值 result()
print(future_1.result(), future_2.result())

'''
result()：获取时会堵塞主线程
且会顺序输出多个任务的返回值，顺序为提交任务时的顺序
as_completed
    可以将一个可迭代对象转为一个生成器
        谁先完成任务就先返回哪个结果
for future in as_completed(future_list):
    print(future.result())
'''